package _2021;

import java.util.Scanner;

/**
 * @author ShadowLim
 * @create 2022-03-29-20:22
 */
public class 杨辉三角形 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int j = 17; j >= 0; j--) { // 第 j 列
            int head = 2 * j;       // 每列最小有效行
            int tail = Math.max(n, head);   // 每列最大有效行
            int row = -1;
            // 对第j列二分查找行
            while (head <= tail) {
                int mid = head + (tail - head) / 2;
                if(combination(mid, j, n) >= n) {
                    tail = mid - 1;
                    row = mid;
                } else {
                    head = mid + 1;
                }
            }
            if (combination(row, j, n) == n) { // 找到要查询的值在第r行第j列
                // 杨辉三角形的行数符号公差为1的等差数列，故用等差数列求和公式
                // 加上第几列再加上1（因为列从0开始）即可得出该数的位置
                System.out.println((long)(row + 1) * row / 2 + j + 1);
                break;
            }
        }
        scanner.close();
    }

    /**
     * 求第 n 行第 j 列的值
     * @param n
     * @param j
     * @param target
     * @return
     */
    private static long combination(long n, long j, long target) {
        long up = 1, down = 1;
        if (j > n / 2) {    // 列数超过当前行的一半（每一行左右对称的）
            j = n - j;
        }
        for (int i = 1; i <= j; i++) {
            up *= n - i + 1;
            down *= i;
            // 得到最简分数 (eg: 4/6 --> 2/3)
            long g = gcd(up, down);
            up /= g;
            down /= g;
            if (up / down > target) {   // 如果中间结果超过n就直接返回
                return up / down;
            }
        }
        return up / down;
    }

    private static long gcd(long a, long b) {
        return b == 0 ? a : gcd(b, a % b);
    }
}
